# 导入webdriver

from selenium import webdriver
import time
# chromedriver 配置相关的
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# 定时延迟的
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 初始化 Chrome 选项
chrome_options = Options()

# 添加任何需要的选项
# chrome_options.add_argument("--headless")  # 无头模式
# chrome_options.add_argument("--disable-gpu")  # 禁用 GPU

# 设置 ChromeDriver 的路径
service = Service(executable_path='E:\\PythonGit\\Python_Crawler\\learn\\chromedriver\\chromedriver.exe')

# 创建 WebDriver 实例
driver = webdriver.Chrome(service=service, options=chrome_options)

# 访问一个网页
driver.get("https://www.yueshushu.top/dev/")

# 获取 capabilities
capabilities = driver.capabilities

# 访问 capabilities 中的 browserName
browser_name = capabilities.get("browserName")

print(f"Browser Name: {browser_name}")

# 休眠10s，显式的
wait = WebDriverWait(driver,10)
# 获取内容,使用 driver.page_source
# 等待,直到id 出现
element = wait.until(EC.presence_of_all_elements_located((By.ID,'header')))

htmlContent = driver.page_source
print(f'打印内容: {htmlContent}')

# 获取其他元素时，可以用上面的 htmlContent 内容进行解析，也可以直接使用 driver 相关的方法进行获取元素
'''
by：指定查找元素的方式，常见的有：
By.ID：通过元素的 ID 查找。
By.NAME：通过元素的 name 属性查找。
By.XPATH：通过 XPath 表达式查找。
By.LINK_TEXT：通过链接文本查找。
By.PARTIAL_LINK_TEXT：通过部分链接文本查找。
By.TAG_NAME：通过 HTML 标签名查找。
By.CLASS_NAME：通过类名查找。
By.CSS_SELECTOR：通过 CSS 选择器查找。

'''

## 通过 ID 查找元素
element_by_id = driver.find_element(By.ID, "some_element_id")

# 通过 XPath 查找元素
element_by_xpath = driver.find_element(By.XPATH, "//div[@class='some_class']")

# 通过 CSS 选择器查找元素
element_by_css = driver.find_element(By.CSS_SELECTOR, "div.some_class")

# 通过链接文本查找元素
element_by_link_text = driver.find_element(By.LINK_TEXT, "Learn More")

# 通过部分链接文本查找元素
element_by_partial_link_text = driver.find_element(By.PARTIAL_LINK_TEXT, "More")

# 通过标签名查找元素
element_by_tag_name = driver.find_element(By.TAG_NAME, "img")

# 通过类名查找元素
element_by_class_name = driver.find_element(By.CLASS_NAME, "some_class")

# find_elements 用法一样，只是查询的是多个信息。

input('按任意键结束')
# 关闭浏览器
driver.quit()


